The present invention relates to methods and apparatus for processing data within a computer network. More specifically, this invention relates to performing network address translation on data.
In a network, devices on the network are provided network addresses, which are used to identify the different devices, when devices communicate between each other. IP protocol version 4 (IPv4) is a protocol used to provide addresses for public and private networks. A private network, such as an enterprise system, may be connected to a public network, such as the Internet. Such private networks may have more devices than available Internet IPv4 addresses allocated to the private network. In such a situation, a network address translator (NAT) may be connected between the private network and the Internet. The NAT may dynamically assign IPv4 addresses, so that the number of devices using the Internet at one time is limited to the available number of IPv4 addresses allocated to the private network. In the alternative, the NAT may use port address translation, where port numbers are used to further identify different devices to provide multiplexing on the port.
IPv4 uses a 32 bit address. Even with these various multiplexing methods to allow multiple devices for each Internet IPv4 address the number of devices that are desired to be connected to the Internet will exceed the limits of a 32 bit address. IPv6 is a protocol that is designed to replace IPv4. IPv6 provides for a 128 bit address and helps to fix problems caused by IPv4. Because a large number of devices and routers using IPv4 are in existence, IPv6 should replace IPv4 gradually, instead of instantaneously. As a result, networks using IPv6 need to be able to communicate with networks using IPv4.
RFC 2765 entitled, “Stateless IP/ICMP Translation Algorithm (SIIT)” and RFC 2766 entitled, “Network Address Translation—Protocol Translation (NAT-PT)”, which are incorporated by reference, provide standards for a network address translator and protocol translator (NAT-PT), which allows an IPv6 network to communicate with an IPv4 network. FIG. 1 is a schematic illustration of a system 100 that allows an IPv6 network 102 to communicate with an IPv4 network 104 under RFC 2765 and RFC 2766. Under RFC 2765 and RFC 2766 a NAT-PT 106 is assigned an address prefix. In this example, the prefix for the NAT-PT 106 is “2001”. In operation, for a device in the IPv6 network to send data to a device in the IPv4 network, a prefix of 2001 is added to the destination address. For example, if a device on the IPv6 network is sending data to a device on the IPv4 network with an address 1.1.1.1, added prefix would cause the destination address to be 2001:0101:0101.
If two overlapping IPv4 networks were connected to the NAT-PT, when data is sent to overlapping addresses, the NAT-PT would be unable to determine which device should receive the data.